perm filename PTY.JMG[UP,DOC]1 blob sn#085658 filedate 1974-04-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		HOW TO FEED AND CARE FOR PTY
C00004 00003		LOOPING THROUGH THE COMMAND FILE
C00007 00004		HERE ARE SOME EXAMPLES OF (SYNONYMOUS) SEQUENCE-LISTS
C00008 00005		PTY WILL RECOGNIZE THESE SPECIAL CHARACTERS
C00010 00006		MORE SPECIAL CHARACTERS WHICH PTY WILL (HOPEFULLY) RECOGNIZE
C00013 00007		WHEN YOU R PTY IT WANTS TO KNOW A FEW THINGS
C00015 00008		HERE IS A SIMPLE EXAMPLE:
C00016 ENDMK
C⊗;
	HOW TO FEED AND CARE FOR PTY


	PTY IS A GENERAL PURPOSE PSEUDO-TTY COMMAND
PROCESSOR. THE USER CREATES A FILE WHICH LISTS THE
SET OF COMMANDS THAT HE WOULD LIKE TO TYPE ON A TTY.
PTY SENDS THESE COMMANDS TO A PSEUDO-TTY. THE USER
CAN SEE THE TYPEOUT ON HIS TTY AND/OR HAVE IT STORED
IN AN OUTPUT FILE FROM PTY.

	PTY IS MOST USEFUL TO SETUP A PRODUCTION RUN
WHICH LOOPS THROUGH A SET OF COMMANDS SEVERAL TIMES, 
CHANGING A FEW PARAMETERS FOR EACH PASS. THE USER CAN
SPECIFY SUCH A LOOP IN THE FILE HE GIVES TO PTY.

	ALL LINES OF THE INPUT FILE MUST BEGIN WITH
ONE OF THE FOLLOWING FOUR CHARACTERS: 

"." 	IF THE LINE IS A MONITOR COMMAND.
"*" 	IF THE LINE IS A PROGRAM COMMAND.
TAB 	IF THIS IS A CONTINUATION OF THE PREVIOUS LINE.
SPACE   LIKE TAB.
"LOOP"	IF THIS IS AN INNER LOOP SPECIFICATION.

	THE FIRST LINE OF THE FILE MUST BE A LOGIN
(MONITOR-LEVEL) COMMAND WITH THE USER'S PPN:

.L 1/PPN
	LOOPING THROUGH THE COMMAND FILE


	THERE ARE TWO WAYS TO INITIATE LOOPING THROUGH THE 
COMMAND FILE. ONE CAN SET THE VARIABLE "LOOPS" WHEN RUNNING
PTY OR ONE CAN EMBED A SEQUENCE-LIST IN SOME LINE. A SEQUENCE-
LIST IS A SET OF SUB-STRINGS SUCH THAT THE NTH SUB-STRING WILL
BE CHOSEN IN THE NTH LOOP THROUGH THE FILE. THIS SUB-STRING
WILL BE DIRECTLY EMBEDDED IN THE CONTEXT THAT THE SEQUENCE-LIST
WAS PLACED. THE TOTAL NUMBER OF LOOPS THROUGH THE FILE CAN THUS
BE DETERMINED BY THE LONGEST SEQUENCE-LIST, AND ALL SHORTER
SEQUENCE-LISTS WILL WRAP AROUND RESPECTIVELY.

	THE FORMAT FOR A SEQUENCE-LIST FOLLOWS (NOTE THAT A SPECIAL
CHARACTER APPEARS IN QUOTES FOR THE PURPOSE OF STATING THE FORMAT ONLY.
THE QUOTES SHOULD NOT APPEAR IN THE ACTUAL FILE. LIKEWISE, THE UNDER-
LINE CHARACTER IS USED IN EXAMPLES OF FORMAT ONLY AS A VISUAL AID
TO SEGMENT STRINGS OR NUMBERS WHICH APPEAR IN THE CONTEXT OF SPECIAL
CHARACTERS. NO UNDERLINES OR SPACES SHOULD BE USED IN THE FILE):

    "⊂"_STR1_"|"_STR2_"|"_ ... _"|"_STRN_"⊃"

NOTE THAT THE LIST IS BOUNDED BY "⊂" AND "⊃", AND THE SUB-
STRINGS ARE SEPARATED BY THE DELIMETER "|". IT IS PERMISSIBLE
TO SPECIFY THE CONSEQUETIVE REPETITION OF ANY STRING IN THE LIST
BY FOLLOWING THAT STRING WITH:  "@"_NUM , WHERE NUM IS THE NUMBER
OF REPETITIONS DESIRED. 
	HERE ARE SOME EXAMPLES OF (SYNONYMOUS) SEQUENCE-LISTS

*⊂FOO.1|FOO.2|FOO.3|FOO.3|FOO.3⊃
*⊂FOO.1|FOO.2|FOO.3@3⊃
*FOO.⊂1|2|3|3|3⊃
*FOO.⊂1|2|3@3⊃

	THE ABOVE COMMANDS WOULD SET PTY TO LOOP THROUGH THE WHOLE
FILE AT LEAST 5 TIMES. THE NTH SUCCESSIVE LOOP WOULD EMPLOY THE NTH 
STRINGS IN THE ABOVE LINES. AN EXAMPLE OF TWO SEQUENCE-LISTS OF 
UNEQUAL LENGTHS, AND A SYNONYMOUS LINEAR LIST FOLLOWS:

*⊂FOO@3|BAZ@3⊃.⊂1|2⊃
*⊂FOO.1|FOO.2|FOO.1|BAZ.2|BAZ.1|BAZ.2⊃
	PTY WILL RECOGNIZE THESE SPECIAL CHARACTERS

"↑"_CHR	 	CONTROL KEY, TO MONITOR (CHR←CHR-'100).
		    ("↑C" IS CALL).

"α"_CHR	  	CONTROL KEY AT USER LEVEL (CHR←CHR+'200).

"β"_CHR	 	META KEY AT USER LEVEL (CHR←CHR+'400).

"$"	 	ALTMODE.

"¬"	 	BACKSPACE.

"""_STR_"""	STR IS USED AS IS. 
		  SPECIAL CHARACTERS ARE NOT INTERPRETED.
		
"⊗"	 	IF THIS CHARACTER IS PLACED IN FRONT OF A COMMAND
		  THEN IT WILL ONLY BE FUNCTIONAL IN THE FIRST LOOP.
		
"\"	 	SUPPRESS THE <CR> AT THE END OF THE COMMAND.

"#"	 	SUBSTITUTE THE LOOP NUMBER FOR THIS CHR.

"∪"	 	INTERACTIVE PAUSE (IS A COMPLETE COMMAND):
		    THE MESSAGE "TYPE <CR> TO CONTIMUE" WILL
		    APPEAR ON TTY AND PTY WAITS FOR <CR>.

"∩"	 	INTERACTIVE TTY MODE (IS A COMPLETE COMMAND):
		    THE MESSAGE "TTY INPUT MODE. TO EXIT TYPE "∩" "
		    WILL APPEAR ON TTY AND PYT WILL ACCEPT INPUT
		    FROM TTY UNTIL IT SEES "∩" CHARACTER.

	MORE SPECIAL CHARACTERS WHICH PTY WILL (HOPEFULLY) RECOGNIZE
"↓"_NUM_"↓"	SKIP NUM-1 LINES FOR NEXT INSTRUCTION

COMMAND_"∧"_NUM		
		LOCAL SLEEP SWITCH IS SET TO NUM SECONDS. THIS MUST
		    APPEAR AT VERY END OF A LINE AND SETS THE LAG UNTIL
		    THE NEXT LINE IS PROCESSED.

COMMAND_"{"_STR1_"}"_STR2_"↓"_NUM_"↓"	  	
		EVALUATE THE INCOMING STRINGS AFTER THE COMMAND IS SENT
		    OUT AND TEST FOR THE (SUB)STRING STR1. IF IT OCCURS:
		    1. SEND OUT THE STRING STR2.
		    2. SKIP NUM-1 LINES IN THE COMMAND FILE (OPTIONAL).

"LOOP"_NUM1_"FOR"_NUM2
		THE NEXT NUM1 LINES IS TREATED AS AN INNER LOOP TO THE MAIN
		    LOOP (THROUGH THE ENTIRE FILE). IT WILL BE READ THROUGH
		    NUM2 TIMES BEFORE CONTINUING IN THE MAIN BODY. NOTE THAT
		    NUM1 OR NUM2 (THE LATTER MAY BE USEFUL) CAN BE SET UP 
		    AS A SEQUENCE-LIST AS WELL AS A CONSTANT. AS USUAL, THE
		    SEQUENCE-LIST IS INDEXED WITH RESPECT TO THE MAIN LOOP.
		    THE SPECIAL CHARACTERS "∀" AND "∃" MAY BE USED AS COUNTERS
		    IN THE INNER LOOP, AS "#" IS USED IN THE MAIN LOOP. THEY
		    WILL RESET TO 1 AT THE INITIALIZATION OF EACH INNER LOOP.

"←"		PTY WILL ASK FOR A STRING, WHICH WILL BE SUBSTITUTED FOR THE
		    ARROW IN THE FILE (INTERACTIVELY).  
"→"		PTY WILL SUBSTITUTE THAT SAME STRING FOR THE REST OF THIS
		    PARTICULAR LOOP FOR THIS ARROW.
	WHEN YOU R PTY IT WANTS TO KNOW A FEW THINGS

"INPUT : "  -	(COMMAND "FILE.EXT") (OR SEE BELOW)
		(EXT="PTY" IS DEFAULT AND NEED NOT BE STATED)

"OUTPUT : " -	("TTY:" AND/OR OUTPUT "FILE.EXT", E.G.:
		1.	 "TTY:"	 	
		2.	 "OUTPUT.LST"
		3.	 "TTY:OUTPUT.LST"
		4.	 NULL (=NO RECORD AT ALL)

	YOU MAY SET ANY OF THE FOLLOWING PARAMETERS

"OFFSET"     - THE OFFSET OF THE NUMBER WHICH "#" WILL CAUSE
		  TO BE PRINTED VS. THE REAL LOOP NUMBER (DEFAULT=0).
"START"	     - THE FIRST ACTUAL LOOP TO BE PROCESSED  (DEFAULT=1).
"LOOPS"      - THE NUMBER OF LOOPS THRU THE COMMAND FILE, IF
		  NOT OTHERWISE SPECIFIED.
"SLEEP"	     - THE NUMBER OF SECONDS THE PTY WILL WAIT BEFORE PROCESSING
		  THE NEXT COMMAND. (NOTE THAT PTY CAN TAKE AS MUCH
		  COMPUTER TIME AS THE JOBS IT RUNS IF SLEEP=0)
"DEBUG"	     - TYPE OUT THE MAGIC BITS (INTERESTED????).

TYPE <CR> TO  "INPUT : "    AND "*" WILL BE PRINTED.
    THEN SET VARIABLE "VAR" TO SOME VALUE AS FOLLOWS:

*VAR←VALUE;
*<CR> WILL RETURN YOU TO "INPUT : "

	HERE IS A SIMPLE EXAMPLE:

.L 1/PPN	
.⊗A DTA1:
.ED BAZ.SAI
*S#$⊂2|3|4⊃$100
*D200:*
*I200
*COMMENT THIS IS VERSION NUMBER # OF BAZ.SAI
	AND THIS IS A COMMENT ON LINE 200;
*$
*E
.TYPE BAZ
.∪
.R SAIL
*BAZ#.REL←BAZ.SAI∧10
*↑C
.R LOADER
*BAZ#$∧10
.SAV BAZ⊂1|2|3⊃
.COP DTA1:←BAZ#.DMP